﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Transactions;
using Chilis.Franquicias.DaDatos;
using Chilis.Franquicias.EnEntidad;
using Chilis.Franquicias.Common;

namespace Chilis.Franquicias.NeNegocio
{
    public class SolicitudNeNegocio
    {
        public ListaFQ_EstadoSolicitud ListaEstadoSolicitud()
        {
            return new SolicitudDaDatos().ListaEstadoSolicitud();
        }

        public ListaFQ_Solicitud ListaEstadosSolicitus_Candidato(FQ_Solicitud oFQ_Solicitud, string sortType, int maximumRows, int startRowIndex, out int Total)
        {
            return new SolicitudDaDatos().ListaEstadosSolicitus_Candidato(oFQ_Solicitud, sortType, maximumRows, startRowIndex, out Total);
        }

        public FQ_Solicitud SeleccionarCandidato_Nueva_Solicitud(Int32 FQ_Candidato_ID)
        {
            return new SolicitudDaDatos().SeleccionarCandidato_Nueva_Solicitud(FQ_Candidato_ID);
        }

        public int CrearSolicitud(FQ_Solicitud oFQ_Solicitud)
        {
            int resultado = 0;
            using (TransactionScope oTransactionScope = new TransactionScope())
            {
                oFQ_Solicitud.FQ_InformacionPatrimonialNeg.FQ_InformacionPatrimonialNeg_ID = new InformacionPatrimonioNegativoDaDatas().CrearInformacionPatrimonialNegativo(oFQ_Solicitud.FQ_InformacionPatrimonialNeg);
                oFQ_Solicitud.FQ_InformacionPatrimonialPos.FQ_InformacionPatrimonialPos_ID = new InformacionPatrimonioPositivoDaDatos().CrearInformacionPatrimonialPositivo(oFQ_Solicitud.FQ_InformacionPatrimonialPos);
                oFQ_Solicitud.FQ_ObservacionSolicitud.FQ_ObservacionSolicitud_ID = new ObservacionSolicitudDaDatos().CrearInformacionPatrimonialPositivo(oFQ_Solicitud.FQ_ObservacionSolicitud);
                oFQ_Solicitud.FQ_ReferenciaBancaria.FQ_ReferenciaBancaria_ID = new ReferenciaBancariaDaDatos().CrearReferenciaBancaria(oFQ_Solicitud.FQ_ReferenciaBancaria);
                oFQ_Solicitud.FQ_ReferenciaComercial.FQ_ReferenciaComercial_ID = new ReferenciaComercialDaDatos().CrearReferenciaComercial(oFQ_Solicitud.FQ_ReferenciaComercial);
                oFQ_Solicitud.FQ_ReferenciaLaboral.FQ_ReferenciaLaboral_ID = new ReferenciaLaboralDaDatos().CrearReferenciaBancaria(oFQ_Solicitud.FQ_ReferenciaLaboral);
                oFQ_Solicitud.FQ_Anexo.FQ_Anexo_ID = new AnexoDaDatos().CrearAnexo(oFQ_Solicitud.FQ_Anexo);

                oFQ_Solicitud.FQ_InformacionPatrimonialNeg.FQ_InformacionPatrimonialNeg_ID = oFQ_Solicitud.FQ_InformacionPatrimonialNeg.FQ_InformacionPatrimonialNeg_ID;
                oFQ_Solicitud.FQ_InformacionPatrimonialPos.FQ_InformacionPatrimonialPos_ID = oFQ_Solicitud.FQ_InformacionPatrimonialPos.FQ_InformacionPatrimonialPos_ID;
                oFQ_Solicitud.FQ_ObservacionSolicitud.FQ_ObservacionSolicitud_ID = oFQ_Solicitud.FQ_ObservacionSolicitud.FQ_ObservacionSolicitud_ID;
                oFQ_Solicitud.FQ_ReferenciaBancaria.FQ_ReferenciaBancaria_ID = oFQ_Solicitud.FQ_ReferenciaBancaria.FQ_ReferenciaBancaria_ID;
                oFQ_Solicitud.FQ_ReferenciaComercial.FQ_ReferenciaComercial_ID = oFQ_Solicitud.FQ_ReferenciaComercial.FQ_ReferenciaComercial_ID;
                oFQ_Solicitud.FQ_ReferenciaLaboral.FQ_ReferenciaLaboral_ID = oFQ_Solicitud.FQ_ReferenciaLaboral.FQ_ReferenciaLaboral_ID;
                oFQ_Solicitud.FQ_Anexo.FQ_Anexo_ID = oFQ_Solicitud.FQ_Anexo.FQ_Anexo_ID;

                resultado = new SolicitudDaDatos().CrearSolicitud(oFQ_Solicitud);

                oTransactionScope.Complete();
            }
            if (resultado != 0)
            {
                return resultado = 1;
            }
            else
            {
                return resultado = -1;
            }
        }

        public int ActualizarSolicitud(FQ_Solicitud oFQ_Solicitud)
        {
            int resultado = 0;
            using (TransactionScope oTransactionScope = new TransactionScope())
            {
                resultado = new InformacionPatrimonioNegativoDaDatas().ActualizarInformacionPatrimonialNegativo(oFQ_Solicitud.FQ_InformacionPatrimonialNeg);
                resultado = new InformacionPatrimonioPositivoDaDatos().ActualizarInformacionPatrimonialPositivo(oFQ_Solicitud.FQ_InformacionPatrimonialPos);
                resultado = new ObservacionSolicitudDaDatos().ActualizarInformacionPatrimonialPositivo(oFQ_Solicitud.FQ_ObservacionSolicitud);
                resultado = new ReferenciaBancariaDaDatos().ActualizarReferenciaBancaria(oFQ_Solicitud.FQ_ReferenciaBancaria);
                resultado = new ReferenciaComercialDaDatos().ActualizarReferenciaComercial(oFQ_Solicitud.FQ_ReferenciaComercial);
                resultado = new ReferenciaLaboralDaDatos().ActualizarReferenciaLaboral(oFQ_Solicitud.FQ_ReferenciaLaboral);
                if (oFQ_Solicitud.FQ_Anexo.ArchivoFisico != Constantes.ValorDefecto )
                {
                    resultado = new AnexoDaDatos().ActualizarAnexo(oFQ_Solicitud.FQ_Anexo);
                }                
                resultado = new SolicitudDaDatos().ActualizarSolicitud(oFQ_Solicitud);

                oTransactionScope.Complete();
            }
            if (resultado != 0)
            {
                return resultado = 3;
            }
            else {
                return resultado = -1 ;
            }
        }

        public FQ_Solicitud SeleccionarSolicitud(Int32 FQ_Solicitud_ID)
        {
            return new SolicitudDaDatos().SeleccionarSolicitud(FQ_Solicitud_ID);
        }

    }
}
